Python 简介和特性
Python 是一种高级编程语言,以其简洁、易读的语法而闻名。它支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。Python 的设计哲学强调代码的可读性和简洁性,使得它成为初学者和专业开发者的理想选择。
环境搭建
安装 Python
- 下载 Python: 访问 Python 官方网站,下载适合你操作系统的 Python 安装包。
- 安装 Python: 运行下载的安装包,并按照提示完成安装。确保勾选“Add Python to PATH”选项,以便在命令行中直接使用 Python。
IDE 选择
选择一个适合你的集成开发环境(IDE),常用的有:
- PyCharm: 功能强大,适合大型项目。
- VS Code: 轻量级,插件丰富,适合多种编程语言。
- Jupyter Notebook: 适合数据科学和交互式编程。
第一个 Python 程序
创建一个简单的 Python 程序,输出“Hello, World!”。
print("Hello, World!")
变量和数据类型
Python 支持多种数据类型,包括整数、浮点数、字符串、布尔值等。
# 整数
a = 10
# 浮点数
b = 3.14
# 字符串
c = "Python"
# 布尔值
d = True
基本运算符
Python 支持常见的算术运算符、比较运算符和逻辑运算符。
# 算术运算符
sum = 10 + 5
difference = 10 - 5
product = 10 * 5
quotient = 10 / 5
# 比较运算符
is_equal = (10 == 5)
is_greater = (10 > 5)
# 逻辑运算符
result = (10 > 5) and (5 < 10)
条件语句
使用 if、elif 和 else 进行条件判断。
x = 10
if x > 0:
print("x 是正数")
elif x == 0:
print("x 是零")
else:
print("x 是负数")
循环
for 循环
for i in range(5):
print(i)
while 循环
i = 0
while i < 5:
print(i)
i += 1
异常处理
使用 try 和 except 处理可能出现的异常。
try:
result = 10 / 0
except ZeroDivisionError:
print("除数不能为零")
列表和元组
列表
fruits = ["apple", "banana", "cherry"]
fruits.append("orange")
print(fruits)
元组
coordinates = (10, 20)
print(coordinates[0])
字典和集合
字典
person = {"name": "Alice", "age": 30}
print(person["name"])
集合
unique_numbers = {1, 2, 3, 4, 4}
print(unique_numbers)
字符串操作
text = "Python Programming"
print(text.upper())
print(text.lower())
print(text.split())
函数定义和调用
def greet(name):
return f"Hello, {name}!"
print(greet("Alice"))
参数和返回值
def add(a, b):
return a + b
result = add(5, 3)
print(result)
模块导入和使用
import math
print(math.sqrt(16))
包管理 (pip)
pip install requests
类和对象
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print(f"{self.name} says Woof!")
my_dog = Dog("Buddy")
my_dog.bark()
继承和多态
class Animal:
def speak(self):
pass
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
animals = [Dog(), Cat()]
for animal in animals:
print(animal.speak())
封装和抽象
class BankAccount:
def __init__(self, balance):
self.__balance = balance
def deposit(self, amount):
self.__balance += amount
def withdraw(self, amount):
if amount <= self.__balance:
self.__balance -= amount
else:
print("Insufficient funds")
def get_balance(self):
return self.__balance
account = BankAccount(1000)
account.deposit(500)
account.withdraw(200)
print(account.get_balance())
读写文本文件
# 写文件
with open("example.txt", "w") as file:
file.write("Hello, World!")
# 读文件
with open("example.txt", "r") as file:
content = file.read()
print(content)
处理 CSV, JSON 数据
CSV
import csv
with open('data.csv', mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Name', 'Age'])
writer.writerow(['Alice', 30])
writer.writerow(['Bob', 25])
JSON
import json
data = {'name': 'Alice', 'age': 30}
with open('data.json', 'w') as file:
json.dump(data, file)
with open('data.json', 'r') as file:
loaded_data = json.load(file)
print(loaded_data)
文件系统操作
import os
# 创建目录
os.mkdir('new_directory')
# 列出目录内容
print(os.listdir('.'))
# 删除文件
os.remove('example.txt')
生成器和迭代器
生成器
def simple_generator():
yield 1
yield 2
yield 3
for value in simple_generator():
print(value)
迭代器
class SimpleIterator:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a <= 3:
x = self.a
self.a += 1
return x
else:
raise StopIteration
my_iter = iter(SimpleIterator())
for i in my_iter:
print(i)
装饰器
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
上下文管理器
class FileManager:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
self.file = None
def __enter__(self):
self.file = open(self.filename, self.mode)
return self.file
def __exit__(self, exc_type, exc_value, traceback):
self.file.close()
with FileManager('example.txt', 'w') as file:
file.write('Hello, World!')
多线程和并发
import threading
def print_numbers():
for i in range(5):
print(i)
def print_letters():
for letter in 'abcde':
print(letter)
thread1 = threading.Thread(target=print_numbers)
thread2 = threading.Thread(target=print_letters)
thread1.start()
thread2.start()
thread1.join()
thread2.join()
datetime 和 time 模块
import datetime
import time
now = datetime.datetime.now()
print(now)
time.sleep(2)
print("2 seconds have passed")
os 和 sys 模块
import os
import sys
# 获取当前工作目录
print(os.getcwd())
# 获取命令行参数
print(sys.argv)
re 模块 (正则表达式)
import re
text = "The quick brown fox jumps over the lazy dog"
result = re.search(r"fox", text)
print(result.group())
collections 模块
from collections import Counter
words = ['apple', 'banana', 'apple', 'cherry', 'banana', 'apple']
word_counts = Counter(words)
print(word_counts)
NumPy 和 Pandas (数据分析)
NumPy
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
Pandas
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]}
df = pd.DataFrame(data)
print(df)
Matplotlib (数据可视化)
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Simple Line Plot')
plt.show()
Requests (HTTP 请求)
import requests
response = requests.get('https://api.github.com')
print(response.json())
Flask/Django (Web 开发)
Flask 框架入门
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, Flask!"
if __name__ == '__main__':
app.run(debug=True)
Django 框架入门
# 创建 Django 项目
django-admin startproject myproject
# 创建应用
python manage.py startapp myapp
RESTful API 设计
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route('/api/data', methods=['GET'])
def get_data():
data = {'message': 'Hello, API!'}
return jsonify(data)
@app.route('/api/data', methods=['POST'])
def post_data():
new_data = request.json
return jsonify(new_data), 201
if __name__ == '__main__':
app.run(debug=True)
Jupyter Notebook 使用
pip install jupyter
jupyter notebook
数据预处理和分析
import pandas as pd
data = pd.read_csv('data.csv')
data.head()
Scikit-learn 机器学习库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3)
model = RandomForestClassifier()
model.fit(X_train, y_train)
accuracy = model.score(X_test, y_test)
print(f"Accuracy: {accuracy}")
TensorFlow/PyTorch 深度学习入门
TensorFlow
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Dense(10, activation='relu', input_shape=(4,)),
tf.keras.layers.Dense(3, activation='softmax')
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(iris.data, iris.target, epochs=10)
PyTorch
import torch
import torch.nn as nn
import torch.optim as optim
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(4, 10)
self.fc2 = nn.Linear(10, 3)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
net = Net()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(net.parameters(), lr=0.001)
for epoch in range(10):
optimizer.zero_grad()
outputs = net(torch.tensor(iris.data, dtype=torch.float32))
loss = criterion(outputs, torch.tensor(iris.target))
loss.backward()
optimizer.step()
命令行应用程序
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))
Web 应用开发
Flask 示例
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
Django 示例
from django.http import HttpResponse
from django.views.generic import TemplateView
class HomeView(TemplateView):
template_name = 'index.html'
def home(request):
return HttpResponse("Hello, Django!")
数据分析项目
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('data.csv')
data.plot(kind='bar', x='name', y='age')
plt.show()
机器学习模型部署
from flask import Flask, request, jsonify
import joblib
app = Flask(__name__)
model = joblib.load('model.pkl')
@app.route('/predict', methods=['POST'])
def predict():
data = request.json
prediction = model.predict([data['features']])
return jsonify({'prediction': prediction.tolist()})
if __name__ == '__main__':
app.run(debug=True)
性能优化
import time
def slow_function():
time.sleep(2)
start_time = time.time()
slow_function()
end_time = time.time()
print(f"Execution time: {end_time - start_time} seconds")
单元测试和 TDD
import unittest
def add(a, b):
return a + b
class TestMathOperations(unittest.TestCase):
def